Modern computer systems and networks include multiple components that are coupled to one another for communication of control and status information and data. The components generally comprise agents and resources. An agent can comprise a component such as a processor that performs functions programmed by a user of the computer system. A resource can be a component available to agents in the system or on the network for support of the agents' functionality. An example of a resource is a main memory storing all of the instructions and data used by processor agents in the system. Each of the processor agents of the system accesses the main memory from time to time to retrieve instructions and data and to store processing results.
Arbitration schemes are implemented in modern computer systems to arbitrate between competing requests by agents for accesses to a system resource. For example, when more than one agent requires access to the main memory at the same time, the arbitration scheme determines which agent is granted first access to the resource. Typically, arbitration schemes are implemented as part of a bus protocol. A bus is a component that comprises one or more wires that couple the various components of the computer system to one another. The bus protocol controls access to and operation of the bus.
Each component coupled to the bus is operated according to the bus protocol in respect of asserting requests for the bus and control of the bus once access to the bus is granted by the arbitration scheme of the bus protocol. Whenever a component controls the bus it can then use the bus to communicate with any other component of the computer system coupled to that bus. Accordingly, when an agent requires access to the main memory, it will assert a request for the bus, wait for a grant of access to the bus by the arbitration scheme and, once access is granted, use the bus to retrieve or store data from or to the main memory.
There are many well known arbitration schemes used in modern computer systems. One such known scheme provides for a hierarchy among agents. For example, certain agents in the system are designated priority agents. A priority agent will always be granted access to the bus before any other non-priority agents.
Thus, whenever a priority agent requires the bus for access to a system resource, it will be granted control of the bus regardless of the needs of all of the non-priority agents in the system. While the priority agent approach to an arbitration scheme assures high performance for those agents given priority status by the system designers, there is a problem when the priority agent or agents have a continuing need for system resources over a period of time. During such times of continuing need, the priority agent will "hog" the bus to the exclusion of the non-priority agents of the system. This condition can denigrate performance of the functionality of the system implemented in the non-priority agents. Accordingly, there is a need for a priority based arbitration scheme to assure high performance by certain agents of the system, but which will also accommodate non-priority agents during periods of continuous domination of the bus by priority agents.